﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ManagerInfosSuite.Manager
{
    public class ManagerQuiz
    {
        private static InfosDBEntities db;

        public InfosDBEntities DB
        {
            get
            {
                if (db == null)
                    db = new InfosDBEntities();
                return db;
            }
            set { db = value; }
        }


        public List<TipologiaTest> GetTipologie()
        {
            return DB.TipologiaTest.ToList();
        }

        public bool InsertDomanda(Domande d)
        {
            try
            {
                db.Domande.Add(d);
                db.SaveChanges();
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }

        public List<Punteggi> GetPunteggiByIdTipologia(int IdTipologiaTest)
        {
            return DB.Punteggi.Where(x => x.IdTipologiaTest == IdTipologiaTest).OrderByDescending(x => x.Punteggio).ToList();
        }


        public List<Domande> GetDomande(int IdTipologiaTest)
        {
            return DB.Domande.Where(x => x.IdTipologiaTest == IdTipologiaTest).ToList();
        }

        public Domande GetSingolaDomandaFromTesto(string testo)
        {
            return DB.Domande.Where(x => x.Domanda.Trim() == testo.Trim()).Single();
        }


        public void UpdatePunteggi()
        {
            int a = db.Punteggi.Where(x => x.SecondiRimanenti == null).Count();
            string e = a.ToString();
            Punteggi[] prova = db.Punteggi.Where(x => x.SecondiRimanenti == null).Take(100).ToArray();
            foreach (var item in prova)
            {
                item.SecondiRimanenti = 0;
                //                db.SaveChanges();
            }
            db.SaveChanges();
        }


        public bool UpdateSingolaDomanda(Domande domandaUp)
        {
            Domande datodacambiare = db.Domande.Where(x => x.IdDomanda == domandaUp.IdDomanda).Single();
            datodacambiare = domandaUp;
            int risultato = db.SaveChanges();
            return true;

        }

        public bool DeleteSingoloPunteggio(long idpunteggio)
        {
            try
            {
                var punt = db.Punteggi.Where(x => x.IdPunteggio == idpunteggio).Single();
                db.Punteggi.Remove(punt);
                db.SaveChanges();
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }

        }

        public List<TipologiaTest> GetReportNumPartiteGiocate()
        {
            return DB.TipologiaTest.ToList();
        }
    }
}
